import requests
from camel.agents import ChatAgent
from camel.models import ModelFactory
from camel.types import ModelPlatformType
from camel.messages import BaseMessage
from camel.types import RoleType
from camel.toolkits import FunctionTool
from dotenv import load_dotenv
import os
load_dotenv()
# 创建模型
Model_Type=os.getenv("MODEL_TYPE")
Model_Api=os.getenv("ZHIPU_API_KEY")
Model_Url=os.getenv("MODEL_URL")
model = ModelFactory.create(
    model_platform=ModelPlatformType.OPENAI,
    model_type=Model_Type,
    api_key=Model_Api,
    url=Model_Url
)

def search_weather(city: str) -> str:
    """
    搜索指定城市的天气信息
    
    Args:
        city: 城市名称
        
    Returns:
        str: 天气信息描述
    """
    try:
        # 使用免费的天气API（示例）
        # 注意：这个API可能需要注册或有限制
        url = f"https://api.openweathermap.org/data/2.5/weather"
        params = {
            "q": city,
            "appid": "your_api_key",  # 需要注册获取API密钥
            "units": "metric",
            "lang": "zh_cn"
        }
        
        response = requests.get(url, params=params, timeout=10)
        if response.status_code == 200:
            data = response.json()
            weather = data["weather"][0]["description"]
            temp = data["main"]["temp"]
            return f"{city}的天气：{weather}，温度：{temp}°C"
        else:
            return f"无法获取{city}的天气信息，请稍后重试"
            
    except Exception as e:
        return f"搜索天气时出错：{str(e)}"

def search_web(query: str) -> str:
    """
    简单的网络搜索功能
    
    Args:
        query: 搜索查询
        
    Returns:
        str: 搜索结果摘要
    """
    try:
        # 这里可以集成任何搜索API
        # 例如：DuckDuckGo、Bing等
        return f"搜索'{query}'的结果：由于没有配置搜索API，无法获取实时搜索结果。建议您直接访问相关网站查询。"
    except Exception as e:
        return f"搜索时出错：{str(e)}"

# 创建工具
weather_tool = FunctionTool(search_weather)
web_tool = FunctionTool(search_web)

# 创建代理
agent = ChatAgent(
    model=model,
    output_language='中文',
    tools=[weather_tool, web_tool]
)

# 测试工具调用
print("=== 测试天气搜索 ===")
response = agent.step('明天郑州市天气怎么样？')
print("AI响应:", response.msgs[0].content)

print("\n=== 测试网络搜索 ===")
response = agent.step('搜索最新的AI技术发展')
print("AI响应:", response.msgs[0].content)

